Put the ipynb file and html file in the github branch you created in the last assignment and submit the link to the commit in brightspace
from plotly.offline import init_notebook_mode
import plotly.io as pio
import plotly.express as px
init_notebook_mode(connected=True)
pio.renderers.default = "plotly_mimetype+notebook"
#load data
df = px.data.gapminder()
df.head()
| country | continent | year | lifeExp | pop | gdpPercap | iso_alpha | iso_num | |
|---|---|---|---|---|---|---|---|---|
| 0 | Afghanistan | Asia | 1952 | 28.801 | 8425333 | 779.445314 | AFG | 4 |
| 1 | Afghanistan | Asia | 1957 | 30.332 | 9240934 | 820.853030 | AFG | 4 |
| 2 | Afghanistan | Asia | 1962 | 31.997 | 10267083 | 853.100710 | AFG | 4 |
| 3 | Afghanistan | Asia | 1967 | 34.020 | 11537966 | 836.197138 | AFG | 4 |
| 4 | Afghanistan | Asia | 1972 | 36.088 | 13079460 | 739.981106 | AFG | 4 |
Recreate the barplot below that shows the population of different continents for the year 2007.
Hints:
sum_df = df.query("year==2007").groupby('continent').sum()
fig = px.bar(sum_df, x='pop', y=sum_df.index, orientation='h', color=sum_df.index) # set the params
fig.show() # show the figure
# YOUR CODE HERE
# to preserve the original plot the code is above
fig.update_yaxes(categoryorder='total ascending') # axis layout setting
fig.show() # show the figure
# YOUR CODE HERE
# to preserve the original plot the code is above
Add text to each bar that represents the population
fig = px.bar(sum_df, x='pop', y=sum_df.index, orientation='h', color=sum_df.index, text='pop', text_auto='.2s') # add text
fig.update_yaxes(categoryorder='total ascending')
fig.update_traces(textposition="outside") # set the position of texts
fig.show()
# YOUR CODE HERE
# to preserve the original plot the code is above
Thus far we looked at data from one year (2007). Lets create an animation to see the population growth of the continents through the years
sum_df = df.groupby(['continent','year']).sum()
sum_df.reset_index(inplace = True)
fig = px.bar(sum_df, x='pop', y='continent', orientation='h', color='continent', animation_frame='year', range_x = [0,4000000000])
fig.update_yaxes(categoryorder='total ascending')
fig.show()
# YOUR CODE HERE
# to preserve the original plot the code is above
Instead of the continents, lets look at individual countries. Create an animation that shows the population growth of the countries through the years
fig = px.bar(df, x='pop', y='country', orientation='h', color='country', animation_frame='year', range_x = [0,1500000000])
fig.update_yaxes(categoryorder='total ascending')
fig.show()
# YOUR CODE HERE
# to preserve the original plot the code is above
Clean up the country animation. Set the height size of the figure to 1000 to have a better view of the animation
fig = px.bar(df, x='pop', y='country', orientation='h', color='country', animation_frame='year', range_x = [0,1500000000], height=1000)
fig.update_yaxes(categoryorder='total ascending')
fig.show()
# YOUR CODE HERE
# to preserve the original plot the code is above
fig = px.bar(df, x='pop', y='country', orientation='h', color='country', \
animation_frame='year', range_x = [0,1500000000], range_y=[132.5,141.5])
fig.update_yaxes(categoryorder='total ascending')
fig.show()
# YOUR CODE HERE
# to preserve the original plot the code is above